技術問答
技術文章
iT 徵才
Tag
聊天室
2023 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
第 12 屆 iThome 鐵人賽
DAY
5
0
自我挑戰組
30天|入門NestJs連載學習筆記
系列 第
5
篇
D05 CH7 | SRP 單一職責原則
12th鐵人賽
azsx96385
團隊
Outcome First
2020-09-18 13:14:43
570 瀏覽
分享至
1. SPP 單一職責原則:一個模組應只對唯一的一個角色負責
以角色為模組凝聚的核心
角色定義,因為相同時刻和原因,受到變動,視為同一同一個角色
在參與讀書會的過程中,我們有深入討論,怎麼樣該視為同一個角色,我自己的結論是,在設計的當下,或者可預期的未來,使用模組的人,都會因為在相同時刻和目的,使用者模組中的方法,那麼視為同一個角色,即使他們如書中說明,他們屬於不同部門,理由是沒有一步到位的設計,且永不變動的需求,所以時候到的時候,再來更改就好了,架構是隨著時間演化的
2. 凝聚是種力量,將程式碼綁定在一起,用來對角色負責
把相同相關的程式碼收攏再一起,或是把因為會有相同變動的程式碼歸納在一起,我一開始想到的是內聚性,書中提到這樣的好處是,避免為了類似的需求,碎片化的到處修改,此外也避免重複部署的成本,而我的理解是,至少對我最直接的幫助是,我知道要修改某需求,我只要到特定模組去就可以了,好變更,易維護
3.不遵守SRP 風險
意外重複 |多角色共用method ,造成互相牽制影響
書中提到的例子是HR系統,同時有三種角色在使用HR & 財務,他們共用計算加班薪資的方法,但萬一政府要修改加班認定的規則,那麼工程師修改加班薪資的方式,就會造兩個角色的衝突
合併修改|共同編輯一個類別,導致合併了修改
同上例子,簡單說就是兩個人改了同一份檔案,造成檔案合併修改,引發災難
解決辦法
將類別根據角色做拆分小類別
這是回歸到最根本問題,究竟你的類別使用者是誰?他們使用方法的時機為何
Employ class → PayCalculator class & HourReporter class
Facade 模式
什麼是 Facade ?
Facade 只負責實例化和委託具有函式的類別
用手洗衣服故事,來說明Facade模式
假設今天你要手洗衣服,你要做一系列動作,拿個桶子→放水→放洗衣精→浸泡衣服→用手搓揉→擰乾,想像每一個動作都需要調用一個類別的方法,光是手洗衣服這件事,就需要調用六個類別.
假設今天走到自動洗衣機,你只需要丟衣服,按下洗衣服,done! ,洗衣機自動幫你放水,浸泡,搓揉,脫水,你不需要知道洗衣機怎麼做到的,你只需要呼叫洗衣機類別,然後使用它的方法,這個方法就幫你把以上不同類別的方法調用完畢
參考
Facade 門面模式
留言
追蹤
檢舉
上一篇
D04 part2 設計原則 引言
下一篇
D06 CH8 | OCP 開放-封閉原則
系列文
30天|入門NestJs連載學習筆記
共
26
篇
目錄
RSS系列文
訂閱系列文
1
人訂閱
22
D22 台南的散步點心
23
D23 台南|國慶煙火在漁光
24
D24 無暇程式碼-CH20 商業邏輯
25
D25 Ch 22 整潔的架構
26
D25 ch 22 整潔的架構
完整目錄
直播研討會
{{ item.subject }}
{{ item.channelVendor }}
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
1123
組
團體組數
52
組
累計文章數
23096
篇
完賽人數
656
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
2018鐵人賽
javascript
2017鐵人賽
python
windows
php
c#
windows server
linux
css
程式設計
react
vue.js
熱門問題
老婆line被盜用換sin卡也無法拿回帳號使用權
網路佈線請益
怎麼才能免費申請
檔案管理與呼叫資料夾(電腦使用習慣)
一般硬體防火牆,對外 大多要限制那些服務?
win10更改資料夾顏色
租用電腦服務
記憶體不足,無法執行 MICROSOFT EXCEL。請關閉其他應用程式再試一次
Docker打包程式的方式
請問有人能教我使用ms17-010(永恆之藍)進行滲透測試嗎?(kali linux)
熱門回答
網路佈線請益
一般硬體防火牆,對外 大多要限制那些服務?
FAT32 有分什麼版本嗎? CCTV 不支持
win10更改資料夾顏色
PC安裝ESXi 8.0備份問題
熱門文章
你知道駭客如何入侵你的網站嗎?
使用 AWS建立商品管理系統
如何不顯示臉書的贊助商廣告 跟 為你推薦
如何使用AWS AI Service Cards – Amazon Rekognition ?
線上點餐系統
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}